The base class for the input manipulator. More...
#include <kanzi/core.ui/input/input_manipulator.hpp>
Classes | |
class | InputMessageArguments |
Message arguments for input manipulator messages. More... | |
struct | TouchInfo |
Structure to hold the state of the current touch points. More... | |
Public Types | |
enum | State { StateReady, StatePossible, StateBegin, StateChange, StateEnd, StateFail, StateDelayed, StateCanceled } |
Enumeration for possible input manipulator states during touch or mouse input sequence. More... | |
enum | TouchEventRoutingMode { RoutingBubbling, RoutingTunneling } |
Enumeration for the available touch event routing modes. More... | |
typedef vector< KzuInputTouchPoint * > | TouchPointsContainer |
typedef TouchPointsContainer::const_iterator | TouchPointsConstIterator |
![]() | |
typedef intrusive_ptr< AbstractPropertyTypeDescriptor::PropertyStorage > | PropertyStoragePtr |
typedef vector< PropertyStoragePtr > | PropertyStorageContainer |
typedef PropertyStorageContainer::iterator | PropertyStorageIterator |
typedef PropertyStorageContainer::const_iterator | PropertyStorageConstIterator |
typedef PropertyStorageContainer::reverse_iterator | PropertyStorageReverseIterator |
Public Member Functions | |
virtual | ~InputManipulator () |
Destructor. More... | |
void | reset () |
Reset the manipulator. More... | |
void | cancel () |
Notify manipulator of touch canceling. More... | |
State | getState () const |
Get the state of the input manipulator. More... | |
void | setState (State state) |
Set the state of the input manipulator. More... | |
Node * | getAttachedNode () const |
Gets the node to which the input manipulator is attached. More... | |
void | requireToFail (InputManipulatorWeakPtr manipulatorToFail) |
Sets the input manipulator that must fail before Kanzi can recognize this input manipulator. More... | |
InputManipulatorWeakPtr | getFailManipulator () const |
Gets the fail manipulator. More... | |
InputManipulator * | getDependManipulator () const |
Gets the dependant input manipulator. More... | |
bool | isAttached () const |
Tells whether the input manipulator is attached to a node. More... | |
void | setReferenceNode (NodeWeakPtr referenceNode) |
Override the attached node as the hit test reference node. More... | |
void | setTouchEventRoutingMode (TouchEventRoutingMode mode) |
Sets the touch event routing mode that you want the input manager to use when distributing the touch points to manipulators. More... | |
TouchEventRoutingMode | getTouchEventRoutingMode () |
Returns the current touch event routing mode. More... | |
![]() | |
Object (Domain *domain) | |
virtual | ~Object () |
Domain * | getDomain () const |
Returns the domain the object belongs to. More... | |
KzuTaskScheduler * | getTaskScheduler () const |
Returns the task scheduler of the object. More... | |
KzuMessageDispatcher * | getMessageDispatcher () const |
Returns the message dispatcher of the object. More... | |
ResourceManager * | getResourceManager () const |
Returns the resource manager of the object. More... | |
virtual const Metaclass * | getDynamicMetaclass () const KZ_OVERRIDE |
Returns the metaclass of the dynamic type of the object. More... | |
AppliedStyleEntrySharedPtr | applyObjectStyle (kanzi::StyleSharedPtr style) |
Applies a style to an object. More... | |
void | unapplyObjectStyle (AppliedStyleEntrySharedPtr appliedStyleEntry) |
void | applyObjectStyles () |
Apply all styles for an object node. More... | |
void | unapplyObjectStyles () |
Unapplies and removes all applied styles. More... | |
![]() | |
virtual | ~MetaObject () |
bool | isTypeOf (const Metaclass *objectType) const |
Determines if the type of this object is the given type or derived from it. More... | |
![]() | |
PropertyObject () | |
virtual | ~PropertyObject () |
template<typename DataType > | |
void | setProperty (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
Sets the local value of a property. More... | |
void | removeKzbProperties () |
template<typename DataType > | |
PropertyType< DataType >::Traits::ReturnType | getProperty (const PropertyType< DataType > &propertyType) const |
Returns the current value of a property. More... | |
template<typename DataType > | |
optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalProperty (const PropertyType< DataType > &propertyType) const |
Evaluates the property value in the same way as the overload above but does not default to the value in property metadata if there are no inputs to the property value. More... | |
template<typename DataType > | |
PropertyType< DataType >::Traits::ReturnType | getPropertyBase (const PropertyType< DataType > &propertyType) const |
Returns the current value of a property disregarding modifiers. More... | |
template<typename DataType > | |
void | setAbstractProperty (AbstractPropertyType abstractPropertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
template<typename DataType > | |
PropertyType< DataType >::Traits::ReturnType | getAbstractProperty (AbstractPropertyType abstractPropertyType) const |
template<typename DataType > | |
PropertyType< DataType >::Traits::ReturnType | getAbstractPropertyBase (AbstractPropertyType abstractPropertyType) const |
template<typename DataType > | |
optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalAbstractProperty (AbstractPropertyType abstractPropertyType) const |
void | setPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
bool | isPropertyFlagSet (AbstractPropertyType propertyType, uint32_t flag) const |
void | clearPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
bool | hasValue (AbstractPropertyType propertyType) const |
Evaluates whether there are any inputs into the property value. More... | |
bool | hasBaseValue (AbstractPropertyType propertyType) const |
Evaluates whether there are any inputs into the property value, disregarding modifiers. More... | |
bool | hasLocalValue (AbstractPropertyType propertyType) const |
Evaluates whether there is a local value set for the property. More... | |
bool | hasNonClassValue (AbstractPropertyType propertyType) const |
Evaluates whether there is a value of any precedence higher than class default value set for the property. More... | |
void | removeLocalValue (AbstractPropertyType propertyType) |
Removes the local value associated with the property. More... | |
void | copyLocalValue (const PropertyObject &other, AbstractPropertyType propertyType) |
Copies local value of single property from another object. More... | |
void | copyLocalValues (const PropertyObject &other) |
Copies all local values from another object. More... | |
virtual void | onPropertyChanged (AbstractPropertyType propertyType, PropertyNotificationReason reason) |
Virtual function to handle property change notifications. More... | |
template<typename DataType > | |
void | addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, void *owner) |
template<typename DataType > | |
void | removePropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *owner) |
template<typename DataType > | |
void | addPropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
template<typename DataType > | |
void | removePropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
void | validatePropertyModifiers (AbstractPropertyType propertyType) |
template<typename DataType > | |
void | addPropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
template<typename DataType > | |
void | removePropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
template<typename DataType > | |
size_t | getPropertyNotificationHandlerCount (const PropertyType< DataType > &propertyType) |
Gets number of current notification handlers for given property type. More... | |
Static Protected Member Functions | |
static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
Friends | |
class | InputManager |
class | InputManipulatorCollection |
class | Node |
class | PanManipulator |
Additional Inherited Members | |
![]() | |
static const Metaclass * | getStaticMetaclass () |
Returns the metaclass of Object class. More... | |
static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
Default implementation that returns empty editor info. More... | |
![]() | |
static const Metaclass * | getStaticMetaclass () |
Returns the metaclass of Object class. More... | |
static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
Default implementation that returns empty editor info. More... | |
![]() | |
typedef vector< AppliedStyleEntrySharedPtr > | AppliedStyleContainer |
Applied style container. More... | |
![]() | |
AppliedStyleContainer | m_appliedStyles |
Listing of applied styles applied to this object. More... | |
The base class for the input manipulator.
Use the input manipulators to recognize gestures, such as click or pinch, from incoming touch events. Kanzi does not differentiate touch events from mouse events.
To use an input manipulator on a node, add it to that node with the Node::addInputManipulator() method. You can add more than one input manipulator to a node, but you can use only one to recognize a gesture. When you want to handle more than one gesture on a node, link the input manipulators to each other in order of importance of the gestures that they recognize.
You can link input manipulators sequentially. For example, if you want a node to recognize the pan, double-click, and click gestures in this order, link the ClickManipulator to the MultiClickManipulator, and the MultiClickManipulator to the PanManipulator.
The linking of the manipulators is directional. The linked manipulator is called the depend manipulator and the manipulator the dependant is linked to is called the fail manipulator. You can link the two manipulators by calling requireToFail() on the fail manipulator, passing the dependant manipulator as argument.
To receive both click and multi-click messages on a node, you need to configure the click manipulator to wait for the failure of the multi-click manipulator:
Kanzi dispatches the touch points from the events to manipulators attached to nodes in phases:
The touch gesture recognition happens in the notifyTouchInside() or notifyTouchOutside() methods of an input manipulator. Every input manipulator attached to a hit test node receives all the touch points occurred in the application. In each input manipulator you must set the correct state to inform Kanzi that the input manipulator recognized a gesture. You do this by calling the setState() method with the apropriate State value.
When an input manipulator recognizes a touch event as a starting action of a gesture:
During and on gesture recognition, input manipulators can dispatch messages to the attached node, to inform the subscribed message handlers about the progress of the gesture.
typedef vector<KzuInputTouchPoint*> kanzi::InputManipulator::TouchPointsContainer |
typedef TouchPointsContainer::const_iterator kanzi::InputManipulator::TouchPointsConstIterator |
Enumeration for possible input manipulator states during touch or mouse input sequence.
|
virtual |
Destructor.
|
explicitprotected |
Constructor.
void kanzi::InputManipulator::reset | ( | ) |
Reset the manipulator.
When you reset a manipulator, you set its state to the initial state (StateReady).
void kanzi::InputManipulator::cancel | ( | ) |
Notify manipulator of touch canceling.
State kanzi::InputManipulator::getState | ( | ) | const |
Get the state of the input manipulator.
void kanzi::InputManipulator::setState | ( | State | state | ) |
Set the state of the input manipulator.
state | The new state of the input manipulator. |
Node* kanzi::InputManipulator::getAttachedNode | ( | ) | const |
Gets the node to which the input manipulator is attached.
void kanzi::InputManipulator::requireToFail | ( | InputManipulatorWeakPtr | manipulatorToFail | ) |
Sets the input manipulator that must fail before Kanzi can recognize this input manipulator.
manipulatorToFail | The manipulator whose failure is required in order for this manipulator to succeed. |
InputManipulatorWeakPtr kanzi::InputManipulator::getFailManipulator | ( | ) | const |
Gets the fail manipulator.
InputManipulator* kanzi::InputManipulator::getDependManipulator | ( | ) | const |
Gets the dependant input manipulator.
When this input manipulator fails, Kanzi notifies the dependant input manipulator.
|
inline |
Tells whether the input manipulator is attached to a node.
|
inline |
Override the attached node as the hit test reference node.
referenceNode | The pointer to the reference node. |
|
inline |
Sets the touch event routing mode that you want the input manager to use when distributing the touch points to manipulators.
The default mode is RoutingBubbling.
Set the mode to RoutingTunneling when you want Kanzi to recognize an underlying gesture before the gestures in the child nodes of the node with an input manipulator. For example, use the RoutingTunneling routing mode for a node with a two-finger pan input manipulator which has a Scroll View child node. With this setting the input manager recognizes the two-finger pan before the pan in the Scroll View node.
mode | The touch event routing mode you want the input manager to use. |
|
inline |
Returns the current touch event routing mode.
|
protectedvirtual |
Attach function for input manipulators.
Called when the manipulator is attached to a node.
|
protectedvirtual |
Detach function for input manipulators.
Called when the manipulator is detached from a node.
|
protectedvirtual |
Reset function for input manipulators. Called when the manipulator is reset.
Reimplemented in kanzi::PanManipulator, kanzi::ClickManipulator, kanzi::PinchManipulator, kanzi::MultiClickManipulator, kanzi::DragAndDropManipulator, and kanzi::LongPressManipulator.
|
protectedvirtual |
Cancel function for input manipulators.
Called when the gesture recognition for the manipulator is cancelled.
|
protectedvirtual |
Fail function for input manipulators.
Called by the dependant manipulator on gesture recognition failure.
Reimplemented in kanzi::ClickManipulator, and kanzi::MultiClickManipulator.
|
protectedvirtual |
Notify the input manipulator about touch events that occur inside the subtree of the input manipulator.
touchInfo | The available touch points, including those that occur over the attached node. |
Reimplemented in kanzi::PanManipulator, kanzi::ClickManipulator, kanzi::PinchManipulator, kanzi::MultiClickManipulator, kanzi::DragAndDropManipulator, and kanzi::LongPressManipulator.
|
protectedvirtual |
Notify the input manipulator about touch events that occur outside the subtree of the input manipulator.
touchInfo | The touch points ocurring outside of the subtree. |
Reimplemented in kanzi::PanManipulator, kanzi::ClickManipulator, kanzi::PinchManipulator, kanzi::MultiClickManipulator, kanzi::DragAndDropManipulator, and kanzi::LongPressManipulator.
|
inlinestaticprotected |
|
protected |
Add hit test information arguments to the message from the touch point.
Derive local point and manipulator node from touch point.
message | Target message. |
touchPoint | Current touch point. |
|
friend |
|
friend |
|
friend |
|
friend |